home *** CD-ROM | disk | FTP | other *** search
- UMERGE(1) Last changed: 1-4-99
-
-
- NNAAMMEE
- uummeerrggee - ucode inliner
-
- SSYYNNOOPPSSIISS
- uummeerrggee _i_n_p_u_t__f_i_l_e --oo _i_n_l_i_n_e_d__f_i_l_e [--tt _s_y_m__f_i_l_e --ii _c_o_n_t_r_o_l__f_i_l_e
- --ssppaaccee__ttiimmee _v_a_l_u_e --iinnlliinnee__ttoo _v_a_l_u_e] [--vv --nnooiinnlliinnee --iinnlliinnee__aallll
- --nnoo__iinniitt__ttoo__aassss --nnoo__pprroommoottiioonn]
-
- IIMMPPLLEEMMEENNTTAATTIIOONN
- IRIX systems
-
- DDEESSCCRRIIPPTTIIOONN
- uummeerrggee,, the ucode inliner, reads the input binary ucode file into an
- input ucode buffer. An output ucode buffer is then allocated. uummeerrggee
- then makes a pass over the input ucode buffer to collect information
- and build data structures, including the program call graph. This
- pass also copies all top-level non-procedure ucode to the output
- buffer. It then analyzes the data structures to decide what to do for
- the output ucode. Finally, it copies the code from the input buffer
- to the output buffer according to a depth-first, post-order traversal
- of the program call graph. In this process, procedure bodies are
- conditionally integrated at their points of calls. When inlining
- procedures, the procedure code is taken from the output buffer. This
- allows the output of integrating procedure A into B to be used when
- procedure B is later integrated into procedure C.
-
- Apart from the previously described basic functions, uummeerrggee also
- performs additional optimizations. For FORTRAN programs, it promotes
- reference parameters to value parameters whenever this can safely be
- performed. When the actual parameter is a constant, it fetches the
- constant value from the INIT ucode and passes the constants directly.
- When the actual parameter is an initialized variable that is never
- written in the whole program, it also looks up the initialized value
- and passes the constant value directly.
-
- uummeerrggee also recognizes initialized variables that are never written
- into and converts the initializations to run-time assignments at the
- beginning of the procedures. This allows the later global optimizer
- to perform constant propagation, constant folding and dead store
- elimination to further improve the code.
-
- The following options are accepted by uummeerrggee:
-
- --vv Turns on verbose mode. In this mode, uummeerrggee will print the
- name of the procedure it is currently copying to the output
- buffer. It also prints the name of the procedure it is
- inlining at each call site.
-
- --nnooiinnlliinnee
- Suppresses the inlining functionality. All other
- optimizations are still performed.
-
- --iinnlliinnee__aallll
- Inline all calls in the program. This option should be used
- with discretion, because it can create tremendous optimization
- overhead in the later optimization phases.
-
- --nnoo__iinniitt__ttoo__aassss
- Turns off uummeerrggee's initialization to run-time assignment
- conversion.
-
- --nnoo__pprroommoottiioonn
- Turns off reference parameter to value parameter promotion.
-
- --tt _s_y_m__f_i_l_e
- Tells uummeerrggee the name of the symbol table file. This is
- necessary for uummeerrggee to know the names of all the procedures.
-
- --ii _c_o_n_t_r_o_l__f_i_l_e
- Gives direct control over uummeerrggee on the inlining of specific
- procedures. The control file must be made up of lines that
- start with a ++ or a -- symbol in the first column, followed by
- a procedure name. The procedures can be listed in arbitrary
- order in the file. Procedures marked with ++ are always
- inlined, and those marked with -- are never inlined.
-
- --ssppaaccee__ttiimmee _v_a_l_u_e
- Uses the given value for this parameter. uummeerrggee's inlining
- decision is based on this parameter that represents space/time
- tradeoff. The default value is 3.0. This tells uummeerrggee that a
- size increase of three instructions is worthy of each cycle
- reduction in execution time. In other words, uummeerrggee will
- inline a procedure whenever the inlining causes three or less
- additional instructions in code size for every one cycle
- speedup in execution time. The value specified in this option
- does not have to be a whole number.
-
- --iinnlliinnee__ttoo _v_a_l_u_e
- The default value of this parameter is 0. A positive value of
- this parameter requests uummeerrggee to perform additional inlining
- of calls to leaf routines up to the specified level, in
- addition to its automatic decision mechanism. A value of 1
- will cause all calls to leaf procedures to be inlined. A
- value of 2 will additionally cause all calls to procedures
- that became leaves due to level 1 inlining to be inlined, etc.
- Under this option, a procedure will become a leaf in the
- inlined output code only if the procedure's maximum distance
- from a leaf in the call graph is less than or equal to the
- value of this parameter. This option is not affected by the
- --nnooiinnlliinnee option.
-
- DDIIAAGGNNOOSSTTIICCSS
- uummeerrggee assumes the input ucode file is error-free. Otherwise, there
- is no guarantee on its behavior.
-
- SSEEEE AALLSSOO
- uuccooddee(1), bbttoouu(1)
-
- This man page is available only online.
-
-